package com.config;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.entity.AlipayConfigEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName AlipayConfig
 * @Description TODO
 * @Author Kx
 * @Date 2025/6/3 14:53
 * @Version 1.0
 */
@Configuration
public class AlipayConfig {
    // 支付宝配置
    private final AlipayConfigEnum configEnum = AlipayConfigEnum.getInstance();

    /**
     * @author: kx
     * @date: 2025/6/3 15:12
     * @return com.alipay.api.AlipayClient
     * @description: 该方法创建并返回一个 AlipayClient 实例，用于调用支付宝接口
     * 它使用配置类 AlipayConfigEnum 中定义的参数初始化 DefaultAlipayClient，包括网关地址、应用ID、密钥等信息，用于后续发起支付宝请求
    */
    @Bean
    public AlipayClient getAlipayClient() {
        return new DefaultAlipayClient(
                configEnum.getGatewayHost(), // 网关地址
                configEnum.getAppId(), // 应用ID
                configEnum.getMerchantPrivateKey(), // 用户私钥
                "json", // 请求格式
                "UTF-8", // 字符编码
                configEnum.getAlipayPublicKey(), // 支付宝公钥
                configEnum.getSignType() // 签名类型
        );
    }
}
